<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>

</head>
<body>
</body>
</html>
<script>
// 面试问题：请说出 var 声明，都有哪些 缺陷？

// var 声明的缺陷：
  // 1. 变量提升 - 变量调用 在 变量声明之前， 调用值为 undefined
  // 2. 可以重复声明
  // 3. 声明的变量，挂载到了 window 上

// let 声明，解决了 var 的三个 问题。 + 提供了「块级作用域」

// let 在解决了上面三个 缺陷的基础上，还 增加了 「块级作用域」。
  // 作用域：函数作用域、全局作用域 + 块级作用域。

// -----------------------------------------------

// 面试问题：请判断 控制台 输出的结果是什么？

// 案例1：
for (let i = 0; i < 10; i++) {
  // console.log('i', i);
  setTimeout(function() {
    console.log('i', i);
  }, 500);
}
// console.log('iii', i);


// 案例2：
for (var i = 0; i < 10; i++) {
  // console.log('i', i);
  setTimeout(function() {
    console.log('i', i);
  }, 500);
}
// console.log('iii', i);


// {
//   let i = 123;
// }
// console.log(i); // 这个 地方报错

</script>